package org.hilo.boot.core;

import tk.mybatis.mapper.common.base.BaseDeleteMapper;
import tk.mybatis.mapper.common.base.BaseSelectMapper;

/**
 * <p>
 * 基于Mybatis Mapper的 顶级 Data Managing Service 接口
 * </p>
 *
 * @author zollty
 * @since 2016-04-20
 */
public interface MapperDms<T> extends BaseSelectMapper<T>, BaseDeleteMapper<T> {
    /**
     * 保存一个实体，null的属性不会保存，会使用数据库默认值
     *
     * @param record
     */
    int insert(T record);

    /**
     * 保存一个实体，null的属性也会保存，不会使用数据库默认值
     *
     * @param record
     */
    int insertNull(T record);
    
    
    /**
     * 根据主键更新属性不为null的值
     *
     * @param record
     */
    int update(T record);
    
    /**
     * 根据主键更新实体全部字段，null值会被更新
     *
     * @param record
     */
    int updateNull(T record);

}
